#pragma once

// 2s 内编译完。防止用户提交模板炸弹
const int COMPILE_TIME_LIMIT = 10; // 暂时放宽一下
// 挺离谱，分配内存 < 200MB， g++ 会报 virtual memory exhausted: Cannot allocate memory
const int COMPILE_MEM_LIMIT = 200 * 1024 * 1024;

const int RUN_TIME_LIMIT = 2;
// 内存限制 256MB
const int RUN_MEM_LIMIT = 512 * 1024 * 1024;
// 输出文件限制在 100MB 以内
const int RUN_FILE_LIMIT = 100 * 1024 * 1024;

// 像 JAVA_HOME 一样，OJ 也要有个自己的专属目录
// 目前通过 readlink("/proc/self/exe", buf, bufsize) 获取
char OJ_HOME[256];

// 编译命令
// 因为用 ce.txt 的 file size 判断编译成功，所以采用 -w 不输出任何 warning
// const char* compile_cmd[] = {"g++",        "-fno-asm", "-O2",  "-w",       "-lm",  "--static",
//                              "-std=c++11", "-o",       "Main", "Main.cpp", nullptr};

// // 运行命令
// const char* run_cmd[] = {"./Main", nullptr};

// // 跟 Language 结构体一一对应
// const char* file_ext[] = {"cpp", "java", "python"};

// compile error 重定向的文件名，随便取，全局统一就行
const char* CE_FILENAME = "ce.txt";

const int JUDGER_INSTANCE_LIMIT = 3; // 并发 judger 进程数

const int MSG_KEY = 15445;  // 全局唯一就行
const int MSG_TYPE = 1;

// 新端口建议选择一个没有被大众软件用过的接口，参考 https://svn.nmap.org/nmap/nmap-services
constexpr const char *LISTEN_URL = "http://localhost:23550";